package com.zhoukx.singleton.type4;

/**
 * @ClassName SingletonTest03
 * @Description: 懒汉式  线程安全问题
 * @Author zhoukx
 * @Date 2020/8/6
 **/
public class SingletonTest04 {
    public static void main(String[] args) {
        Singleton instance = Singleton.getInstance();
        Singleton instance2 = Singleton.getInstance();
        System.out.println("instance:" + instance.hashCode());
        System.out.println("instance2:" + instance2.hashCode());
    }
}
//  解决线程安全问题
class Singleton {

    private static Singleton instance;

    private Singleton() {

    }


    /**
     *  这种方法不能用 ，不能解决 线程安全问题
     * if (instance == null) {
     * synchronized（this）{
     * instance = new Singleton();
     * }
     * <p>
     * }
     *
     * @return
     */
    // 提供一个静态的公有方法，当使用该方法，才去创建
    public static synchronized Singleton getInstance() {

        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
